/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.cadoc.cqe;

public enum FactVector {

	/** 1. Bit **/
	PRIVATE(1),
	
	/** 2. Bit **/
	PUBLIC(2),
	
	/** 3. Bit **/
	ABSTRACT(3),
	
	/** 4. Bit **/
	STATIC(4),
	
	/** 5. Bit **/
	FINAL(5),
	
	/** 6. Bit **/
	SYNCHRONIZED(6),
	
	TRANSIENT(7),
	
	CONSTRUCTOR(8),
	
	THREAD(9),
	
	ITERABLE(10),
	
	OVERWRITES(11),
	
	PARAMETER(12),
	
	ASSIGNES(13),
	
	VOID(14),
	
	ITERATES(15),
	
	TYPE_PARAMETRIZED(16),
	
	CALLS(17),
	
	THROWS_EXCEPTION(18),
	
	HAS_PARAM(20),
	
	EXTENDS(21),
	
	IMPLEMENTS(22),
	
	IS_TYPE(23),
	
	IS_OPERATION(24),
	
	IS_ELEMENT(25),

	NAME_SPECIFIED(26),

	EXTENDED(27),
	
	CALLED(28);
	
	private int bitValue;
	private int bit;
	
	private FactVector(int bit){
		this.bit = bit;
		this.bitValue = (int) Math.pow(2, (bit-1));
	}

	public int value() {
		return bitValue;
	}

	public int getBit() {
		return bit;
	}
	
	
	
}
